A Compacting Garbage Collector for Unidirectional Heaps
نویسندگان
چکیده
A unidirectional heap is a heap where all pointers go in one direction, e.g. from newer to older objects. For a strict functional language, such as Erlang, the heap may be arranged so that it is unidirectional. We here present a compacting garbage collection algorithm which utilizes the fact that a heap is unidirectional. Only one memory space is used in our algorithm. In fact, no extra memory is used at all, not even any reserved bits within the cells. The algorithm is quite easy to extend to a variant of generational garbage collection.
منابع مشابه
Garbage Collection Alternatives for Icon
Copying garbage collectors are becoming the collectors of choice for very high-level languages and for functional and object-oriented languages. Copying collectors are particularly efficient for large storage regions because their execution time is proportional only to the amount of accessible data, and they identify and compact this data in one pass. In contrast, mark-and-sweep collectors exec...
متن کاملCombining Single-Space and Two-Space Compacting Garbage Collectors
The garbage collector presented in this paper makes use of two well known compaction garbage collection algorithms with very diierent performance characteristics: Cheney's two-space copying collector and Jon-ker's single-space sliding compaction collector. We propose a scheme which allows either collector to be used. The run-time memory requirements of the program being executed are used to det...
متن کاملStaccato: A Parallel and Concurrent Real-time Compacting Garbage Collector for Multiprocessors
Existing real-time garbage collectors are either unable to scale to large multiprocessors, or unable to meet hard real-time requirements even with specialized hardware support. These limitations are rapidly becoming unacceptable: hardware improvements have brought multi-gigabyte heaps and ubiquitous multi-core parallelism; applications have increasingly stringent real-time requirements; and non...
متن کاملEfficient Memory Management for Long-Lived Objects
Generational garbage collectors perform well for short-lived objects, but do not deal well with long-lived objects. Existing techniques for long-lived objects, such as pretenuring, eliminate work in the nursery; however, the collector still needs to deal with the long-lived objects in the older generations. We introduce a novel scheme employing regions that avoids both nursery and old generatio...
متن کاملA Compacting Garbage Collector for Erlang
By utilising the fact that all data in the heap in an Erlang implementation may be arranged so that all pointers go towards earlier allocated objects, a compacting garbage collection algorithm has been designed. In contrast to a copying garbage collection algorithm, only one memory space is used. In fact, no extra memory is used at all, not even any reserved bits within the cells. The algorithm...
متن کامل